Qt5.4文档翻译:QNetworkDiskCache类,QNetworkDiskCache Class
QNetworkDiskCache 类,实现了一个基本的硬盘缓存。 详细说明……
头文件: |
#include <QNetworkDiskCache> |
qmake指令: |
QT += network |
自此版本开始引入: |
Qt 4.5 |
继承: |
QNetworkDiskCache 类,实现了一个基本的硬盘缓存。
QNetworkDiskCache 使用 QDataStream 来将每个url 存储在它自己的位于 cacheDirectory 的文件中。那些 其 MimeType 为文本(text)的文件,会被使用 qCompress 进行压缩。每个缓存文件,文件 名开头是 "cache_" ,结尾是 ".cache" 。数据 只会在 insert ()和 updateMetaData ()调用中被写入到硬盘。
目前,妳不能在多个硬盘缓存之间共享同一组缓存文件。
QNetworkDiskCache 默认情况 下会将用于缓存的硬盘空间限制为 50MB 。
注意,妳必须先设置缓存目录,它才会工作。
可按如下代码来启用面向网络的硬盘缓存:
QNetworkAccessManager *manager = new QNetworkAccessManager (this);
QNetworkDiskCache *diskCache = new QNetworkDiskCache (this);
diskCache-> setCacheDirectory ("cacheDir");
manager->setCache(diskCache);
在发送请求时,可按照以下代码来控制优选方案,什么时候使用缓存,什么时候使用网络:
// 发起一个普通请求(优先使用网络,这是默认选项)
QNetworkRequest request( QUrl ( QString ("http://qt-project.org")));
manager->get(request);
// 发起一个优先使用缓存的请求
QNetworkRequest request2( QUrl ( QString ("http://qt-project.org")));
request2.setAttribute( QNetworkRequest ::CacheLoadControlAttribute, QNetworkRequest ::PreferCache);
manager->get(request2);
可使用以下代码来检查,回复内容是来自于缓存还是来自于网络:
void replyFinished( QNetworkReply *reply) {
QVariant fromCache = reply->attribute( QNetworkRequest ::SourceIsFromCacheAttribute);
qDebug () << "page from cache?" << fromCache.toBool();
}
返回将用来存储缓存文件的位置。
参考 setCacheDirectory () 。
覆盖 了 QAbstractNetworkCache::clear () 。
覆盖 了 QAbstractNetworkCache::data () 。
返回此硬盘缓存的当前最大尺寸。
参考 setMaximumCacheSize () 。
设置要用来储存缓存文件的目录为 cacheDir
QNetworkDiskCache 发现此目录不存在的话,会创建它。
预先准备好的那些缓存条目,会在插入时被放置到新的缓存目录中。
参考 cacheDirectory () 和 QDesktopServices::CacheLocation 。
将此硬盘缓存的最大尺寸设置为 size 。
如果 新设置的尺寸比当前的缓存尺寸要小,则,该缓存对象会调用 expire () 。
参考 maximumCacheSize () 。
Your opinionsHxLauncher: Launch Android applications by voice commands